use clap::Parser;
use serde::{Deserialize, Serialize};

#[derive(Parser, Debug, Clone, Serialize, Deserialize)]
#[command(version, about, long_about = None)]
pub struct MyConfig {
    /// 必须是英文，是生成的文件夹名称，以及配置文件中的名称
    pub name: String,
    /// 可以是中文，如果不用填则默认和第一个参数一样，用在标题处。
    #[arg(short = 't', long, required = false)]
    pub title: Option<String>,
    /// 测试使用，设置为true时不会输出，只进行逻辑执行
    #[arg(short = 'T', long, default_value = "false")]
    pub test: bool,
    /// 是否进行git初始化，默认为false不生成
    #[arg(long, short, default_value = "false")]
    pub git: bool,
}
impl MyConfig {
    pub fn get() -> Self {
        let mut r = MyConfig::parse();
        if r.title.is_none() {
            r.title = Some(r.name.clone());
        }
        r
    }
}
